
// columns Array[Object], provide 'label' and 'prop' for default slot
const tableColumns = [
  {
    label: 'id',
    prop: 'id',
  },
  {
    label: 'info1',
    prop: 'info1',
    children: [
      {
        label: '学号',
        prop: 'stu_num',
      },
      {
        label: '姓名',
        prop: 'name',

      },
    ]
  },
  {
    label: '性别',
    prop: 'sex',
  },
  {
    label: '年龄',
    prop: 'age',
  },
  {
    label: 'info2',
    prop: 'info2',
    children: [
      {
        label: '手机号码',
        prop: 'phone',
      },
      {
        label: '证件号码',
        prop: 'IDCard',
      },
    ]
  },
  {
    label: '民族',
    prop: 'nation',
  },
  {
    label: '地址',
    prop: 'presentAddr',
  }
]
export default function buildConfig({ status }) {
  // dataSource String url | Object {url, method, params | data, pageSize: Number}
  const dataSource = { url: '/testStudentList', method: 'get' }
  dataSource.params = {} // 参数会每次请求都携带

  if(status !== undefined) dataSource.params.status = status

  // 自定义分页参数名，默认pageNo，pageSize
  const paginationKey = { pageNo: 'page', pageSize: 'limit' }

  // 自定义请求内数据data和total参数key，默认result, total
  const dataKey = { result: 'list', total: 'count' }

  // 操作栏按钮配置
  // edit || del 可通过disabled(props)来控制按钮禁用逻辑
  const buttons = {
    view: '/equipment/getById', // 查看
    edit: '/equipment/edit', // 修改
    del: { // 删除
      url: '/delete',
      isRestful: false, // del 才有的配置
      disabled(props){
        // 禁用数据id为1的行的删除按钮
        return props.row.id === 1
      }
    },
    add: '/equipment/add', // 新增
    exportExcel: { // 导出
      // insideExport: false,
      // url: '/util/exportEquipment',
      fileName: '学生信息',
      // params: {exportParams:1}
    }
  }

  // 插槽配置
  const slots = {
    searchForm: { // 头部条件搜索表单
      collapse: false, // 顶部是否隐藏
      formatter: { // 格式化字段值 Object || function
        change: v => ({ // 修改prop的change字段为isAge
          isAge: v
        })
      }
    },
    dialogForm: { // 弹窗表单
      topic: '学生信息',
      dialogProps: { // 弹窗属性

      },
      // 可以是Object
      inFormatter: { // 格式化打开修改弹窗传递的表格行内数据 Object || function
        name: v => ({ name: v + '1' }) // 给name拼接一个 '1'
      },
      // 可以是function
      outFormatter(form) { // 格式化表单输出数据 Object || function
        const { name } = form
        form.name = name.slice(0, -1) // 去除 name 拼接的 '1'
      },
      formProps: { // 弹窗内表单属性
        labelWidth: '138px',
        rules: {
          name: [{ required: true, message: '请输入姓名', trigger: 'change' }],
        }
      }
    }
  }


  return Object.freeze({
    dataSource,
    paginationKey,
    dataKey,
    columns: tableColumns,
    buttons,
    slots
  })
}